package com.tcc.fastline.DAO.mock;

import java.util.List;
import java.util.Random;

import com.tcc.fastline.DAO.interfaces.IEstabelecimentoDAO;
import com.tcc.fastline.Domain.Estabelecimento;

public class EstabelecimentoMockDAO implements IEstabelecimentoDAO {

	public static Integer randInt() {

	    Random rand = new Random();

	    int randomNum = rand.nextInt((200 - 3) + 1) + 3;

	    return randomNum;
	}
	
	@Override
	public Estabelecimento CriarEstabelecimento(Estabelecimento estabelecimentoNovo) 
	{
		try {
			estabelecimentoNovo.setCodigo(randInt());
			BDmock.Estabelecimentos.add(estabelecimentoNovo);
			return estabelecimentoNovo;
		} catch (Exception e) {
			throw new RuntimeException("Erro ao inserir o estabelecimento");
		}
	}

	@Override
	public Estabelecimento AtualizarEstabelecimento(Estabelecimento estabelecimento) 
	{
		try {
			Estabelecimento estab = BuscarEstabelecimento(estabelecimento.getCodigo());
			
			BDmock.Estabelecimentos.remove(estab);
			
			estab.setEmail(estabelecimento.getEmail());
			estab.setEndereco(estabelecimento.getEndereco());
			estab.setNome(estabelecimento.getNome());
			estab.setSenha(estabelecimento.getSenha());
			
			BDmock.Estabelecimentos.add(estab);
			
			return estabelecimento;
		} catch (Exception e) {
			throw new RuntimeException("Erro ao alterar o estabelecimento");
		}
	}

	@Override
	public List<Estabelecimento> BuscarEstabelecimentos() {
		try {
			return BDmock.Estabelecimentos;
		} catch (Exception e) {
			throw new RuntimeException("Erro ao buscar Estabelecimentos");
		}
	}

	@Override
	public void ExcluirEstabelecimento(Integer codigoEstabelecimento) {
		try {
			Estabelecimento estab = BuscarEstabelecimento(codigoEstabelecimento);
			
			if(estab != null){
				BDmock.Estabelecimentos.remove(estab);
			}
			
		} catch (Exception e) {
			throw new RuntimeException("Erro ao excluir Estabelecimentos");
		}
	}

	private Estabelecimento BuscarEstabelecimento(Integer codigoEstabelecimento) {
		Estabelecimento estab = null;
		for (Estabelecimento estabelecimento : BDmock.Estabelecimentos) {
			if(estabelecimento.getCodigo() == codigoEstabelecimento){
				estab = estabelecimento;
			}
		}
		return estab;
	}
}
